package com.whc.util;

import cn.hutool.crypto.SmUtil;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

/**
 * @author wang-hai-cheng
 * @since 2021/12/11 13:05
 */
public class PasswordUtil {
    /**
     * 获取盐
     *
     * @return 盐
     */
    public static String generateSalt() {
        return UUID.randomUUID().toString().replace("-", "").substring(16);
    }

    /**
     * 加密
     *
     * @param password 密码
     * @param salt     盐
     * @return 加密后密码
     */
    public static String encode(String password, String salt) {
        return SmUtil.sm4(salt.getBytes(StandardCharsets.UTF_8)).encryptHex(password);
    }

    /**
     * 校验密码是否正确
     *
     * @param rawPassword    原密码
     * @param encodePassword 加密后的密码
     * @param salt           盐
     * @return 校验结果
     */
    public static boolean verify(String rawPassword, String encodePassword, String salt) {
        return encode(rawPassword, salt).equals(encodePassword);
    }
}